package various;


import lejos.nxt.LCD;
import lejos.nxt.Motor;
import lejos.nxt.SensorPort;
import lejos.nxt.TouchSensor;
import lejos.nxt.UltrasonicSensor;
import lejos.nxt.addon.ColorSensor;

public class ReadColors {
	public static void main(String[] args) throws Exception {
		ColorSensor cs = new ColorSensor(SensorPort.S1);
		TouchSensor ts = new TouchSensor(SensorPort.S2);
		UltrasonicSensor us = new UltrasonicSensor(SensorPort.S3);

		Colori.initColori();

		Motor.A.setSpeed(50);
		Motor.A.forward();
		us.getDistance();
		Thread.sleep(1000);
		Motor.A.stop();

		Motor.A.setSpeed(50);
		Motor.A.backward();
		us.getDistance();
		Thread.sleep(1000);
		Motor.A.stop();

		calibra(ts, cs);
		int in = 0;
		us.getDistance();
		Thread.sleep(2000);
		us.getDistance();

		Motor.A.setSpeed(100);
		Motor.A.forward();
		while (us.getDistance() <= 20) {
			// if(ts.isPressed()){
			Motor.A.stop();
			LCD.clear();
			LCD.drawString("Colore: " + Colori.getColore(cs.getColorNumber()),
					0, 1);
			in = Motor.A.getTachoCount();
			LCD.drawString("Offset: " + in, 0, 3);
			Thread.sleep(3000);
			// }
			Motor.A.setSpeed(100);
			Motor.A.forward();
		}
		while (us.getDistance() >= 5) {
			Motor.A.setSpeed(200);
			Motor.A.backward();
			LCD.clear();
			LCD.drawString("cm: " + us.getDistance(), 0, 4);

		}

		// for (int i = 0; i < 20; i++) {
		// int e=cs.getColorNumber();
		// LCD.clear();
		// LCD.drawInt(e, 2, 2);
		// Thread.sleep(2000);
		// }

	}

	public static void calibra(TouchSensor ts, ColorSensor cs) throws Exception {
		int c = 1;
		int d = 1;
		while ((c == 1 && d == 1) && !ts.isPressed()) {
			LCD.clear();
			LCD.drawString("Avvio calibrazione bianco...", 0, 2);
			c = cs.initWhiteBalance();
			LCD.drawString("Calibrazione bianco eseguita", 0, 3);
			LCD.drawInt(c, 0, 3);
			Thread.sleep(5000);

			LCD.clear();
			LCD.drawString("Avvio calibrazione nero...", 0, 2);
			d = cs.initBlackLevel();
			LCD.clear();
			LCD.drawString("Calibrazione nero eseguita", 0, 3);
			LCD.drawInt(d, 0, 6);
			Thread.sleep(1000);
		}
		LCD.clear();

	}

	// MappaColori
	// static String getColore(int a){
	// String r="";
	// switch (a) {
	// case 0:
	// r="nero";
	// break;
	// case 1:
	// r="violetto";
	// break;
	// case 2:
	// r="viola";
	// break;
	// case 3:
	// r="blu";
	// break;
	// case 4:
	// r="verde";
	// break;
	// case 5:
	// r="lime";
	// break;
	// case 6:
	// r="giallo";
	// break;
	// case 7:
	// r="arancione";
	// break;
	// case 8:
	// r="rosso";
	// break;
	// case 9:
	// r="cremisi";
	// break;
	// case 10:
	// r="magenta";
	// break;
	// case 11:
	// r="pastello1";
	// break;
	// case 12:
	// r="pastello2";
	// break;
	// case 13:
	// r="pastello3";
	// break;
	// case 14:
	// r="pastello4";
	// break;
	// case 15:
	// r="pastello5";
	// break;
	// case 16:
	// r="pastello6";
	// break;
	// case 17:
	// r="bianco";
	// break;
	// default:
	// r="nessun colore!";
	// break;
	// }
	// return r;
	// }
	//
	// MappaColori
}
